<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Creating, Indexing, and Deleting a Document | Elasticsearch: The Definitive Guide [2.x] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch: The Definitive Guide [2.x]">
<link rel="up" href="distributed-docs.html" title="Distributed Document Store">
<link rel="prev" href="_how_primary_and_replica_shards_interact.html" title="How Primary and Replica Shards Interact">
<link rel="next" href="distrib-read.html" title="Retrieving a Document">
<meta name="DC.type" content="Learn/Docs/Legacy/Elasticsearch/Definitive Guide/2.x">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="2.x">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<p>
  <strong>WARNING</strong>: The 2.x versions of Elasticsearch have passed their
  <a href="https://www.elastic.co/support/eol">EOL dates</a>. If you are running
  a 2.x version, we strongly advise you to upgrade.
</p>
<p>
  This documentation is no longer maintained and may be removed. For the latest
  information, see the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html">current
  Elasticsearch documentation</a>.
</p>
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch: The Definitive Guide [2.x]</a></span>
»
<span class="breadcrumb-link"><a href="getting-started.html">Getting Started</a></span>
»
<span class="breadcrumb-link"><a href="distributed-docs.html">Distributed Document Store</a></span>
»
<span class="breadcrumb-node">Creating, Indexing, and Deleting a Document</span>
</div>
<div class="navheader">
<span class="prev">
<a href="_how_primary_and_replica_shards_interact.html">« How Primary and Replica Shards Interact</a>
</span>
<span class="next">
<a href="distrib-read.html">Retrieving a Document »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="distrib-write"></a>Creating, Indexing, and Deleting a Document<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch-definitive-guide/edit/2.x/040_Distributed_CRUD/15_Create_index_delete.asciidoc">edit</a>
</h2>
</div></div></div>
<p>Create, index, and delete requests are <em>write</em> operations, which must be
successfully completed on the primary shard before they can be copied to any
associated replica shards, as shown in <a class="xref" href="distrib-write.html#img-distrib-write" title="Creating, indexing, or deleting a single document">Figure 9, “Creating, indexing, or deleting a single document”</a>.</p>
<div id="img-distrib-write" class="imageblock">
<div class="content">
<img src="images/elas_0402.png" alt="Creating, indexing or deleting a single document">
</div>
<div class="title">Figure 9. Creating, indexing, or deleting a single document</div>
</div>
<p>Here is the sequence of steps necessary to successfully create, index, or
delete a document on both the primary and any replica shards:</p>
<div class="olist orderedlist">
<ol class="orderedlist">
<li class="listitem">
The client sends a create, index, or delete request to <code class="literal">Node 1</code>.
</li>
<li class="listitem">
The node uses the document’s <code class="literal">_id</code> to determine that the document
belongs to shard <code class="literal">0</code>. It forwards the request to <code class="literal">Node 3</code>,
where the primary copy of shard <code class="literal">0</code> is currently allocated.
</li>
<li class="listitem">
<code class="literal">Node 3</code> executes the request on the primary shard. If it is successful,
it forwards the request in parallel to the replica shards on <code class="literal">Node 1</code> and
<code class="literal">Node 2</code>. Once all of the replica shards report success, <code class="literal">Node 3</code> reports
success to the coordinating node, which reports success to the client.
</li>
</ol>
</div>
<p>By the time the client receives a successful response, the document change has
been executed on the primary shard and on all replica shards. Your change is
safe.</p>
<p>There are a number of optional request parameters that allow you to influence
this process, possibly increasing performance at the cost of data security.
These options are seldom used because Elasticsearch is already fast, but they
are explained here for the sake of completeness:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">consistency</code>
</span>
</dt>
<dd>
<p>By default, the primary shard requires a <em>quorum</em>, or majority, of shard copies
(where a shard copy can be a primary or a replica shard) to be available
before even attempting a write operation. This is to prevent writing data to the
“wrong side” of a network partition.  A quorum is defined as follows:</p>
<pre class="literallayout">int( (primary + number_of_replicas) / 2 ) + 1</pre>

<p>The allowed values for <code class="literal">consistency</code> are <code class="literal">one</code> (just the primary shard), <code class="literal">all</code>
(the primary and all replicas), or the default <code class="literal">quorum</code>, or majority, of shard
copies.</p>
<p>Note that the <code class="literal">number_of_replicas</code> is the number of replicas <em>specified</em> in
the index settings, not the number of replicas that are currently active.  If
you have specified that an index should have three replicas, a quorum would
be as follows:</p>
<pre class="literallayout">int( (primary + 3 replicas) / 2 ) + 1 = 3</pre>

<p>But if you start only two nodes, there will be insufficient active shard
copies to satisfy the quorum, and you will be unable to index or delete any
documents.</p>
</dd>
<dt>
<span class="term">
<code class="literal">timeout</code>
</span>
</dt>
<dd>
<p>What happens if insufficient shard copies are available? Elasticsearch waits,
in the hope that more shards will appear.  By default, it will wait up to 1
minute. If you need to, you can use the <code class="literal">timeout</code> parameter to make it abort
sooner: <code class="literal">100</code> is 100 milliseconds, and <code class="literal">30s</code> is 30 seconds.</p>
</dd>
</dl>
</div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>A new index has <code class="literal">1</code> replica by default, which means that two active shard
copies <em>should</em> be required in order to satisfy the need for a <code class="literal">quorum</code>.
However, these default settings would prevent us from doing anything useful
with a single-node cluster.  To avoid this problem, the requirement for
a quorum is enforced only when <code class="literal">number_of_replicas</code> is greater than <code class="literal">1</code>.</p>
</div>
</div>
</div>
<div class="navfooter">
<span class="prev">
<a href="_how_primary_and_replica_shards_interact.html">« How Primary and Replica Shards Interact</a>
</span>
<span class="next">
<a href="distrib-read.html">Retrieving a Document »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
